# N 对情侣坐在连续排列的 2N 个座位上，想要牵到对方的手。 计算最少交换座位的次数，以便每对情侣可以并肩坐在一起。
# 一次交换可选择任意两人，让他们站起来交换座位。
# 人和座位用 0 到 2N-1 的整数表示，情侣们按顺序编号，第一对是 (0, 1)，第二对是 (2, 3)，以此类推，最后一对是 (2N-2, 2N-1)。


class Solution:
    def minSwapsCouples(self, row) -> int:
        len_row, res = len(row), 0
        for i in range(0, len_row):
            row[i] //= 2
        for num in range(0, int(len_row / 2)):
            if row[2*num] != row[2*num+1]:
                tar_index = row[2*num+2:].index(row[2*num]) + 2 * num + 2
                row[2*num + 1], row[tar_index] = row[tar_index], row[2*num + 1]
                res += 1
        return res


a = Solution()
print(a.minSwapsCouples([3, 2, 0, 1]))